package com.frank.practice.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.frank.common.entity.PageInfo;
import com.frank.common.entity.PageResult;
import com.frank.practice.api.req.GetPracticeSubjectsReq;
import com.frank.practice.api.vo.*;
import com.frank.practice.entity.dto.PracticeSetDto;
import com.frank.practice.entity.dto.PracticeSubjectDto;

import java.util.List;

/**
 * @author Frank Zou
 * @version v0.0.1
 * @date 2025/3/18
 * @description
 */
public interface PracticeSetService {

    /**
     * 获取专项练习内容
     * @return List<SpecialPracticeVo>
     */
    List<SpecialPracticeVo> getSpecialPracticeContent();

    /**
     * 添加专项练习
     * @param practiceSubjectDto PracticeSubjectDto
     * @return PracticeSetVo
     */
    PracticeSetVo addPractice(PracticeSubjectDto practiceSubjectDto);

    /**
     * 获取练习题目列表
     * @param req GetPracticeSubjectReq
     * @return PracticeSubjectListVo
     */
    PracticeSubjectListVo getSubjects(GetPracticeSubjectsReq req);

    /**
     * 获取单个练习题目详情
     * @param practiceSubjectDto PracticeSubjectDto
     * @return PracticeSubjectVo
     */
    PracticeSubjectVo getPracticeSubject(PracticeSubjectDto practiceSubjectDto);

    /**
     * 获取模拟套卷内容
     * @param practiceSetDto PracticeSetDto
     * @return Page<PracticeSetVo>
     */
    Page<PracticeSetVo> getPreSetContent(PracticeSetDto practiceSetDto);

    /**
     * 获取未完成的练题内容
     * @param pageInfo 分页参数
     * @return 未完成的练题内容
     */
    Page<UnCompletePracticeSetVo> getUnCompletePractice(PageInfo pageInfo);
}
